//package com.bmf.log.aspect;
//
//import com.alibaba.fastjson.JSON;
//import lombok.extern.slf4j.Slf4j;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.core.io.InputStreamSource;
//
//import javax.servlet.ServletResponse;
//import java.util.Arrays;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * 日志aspectj
// *
// * @author
// * @date 2022/08/26
// */
//@Aspect
//@Slf4j
//public class LogAspectj {
//
//
//
//
//    /**
//     * 定义切面
//     * 第一个“*”符号 表示返回值的类型任意
//     * ..*.*   所有类  任何方法名，括号表示参数，两个点表示任何参数类型
//     */
//    @Pointcut("execution(* com.bmf.*.module.*.controller..*.*(..))")
//    public void webLog() {
//
//    }
//
//    /**
//     * 环绕通知
//     *
//     * @return Object
//     */
//    @Around("webLog()")
//    public Object doAround(ProceedingJoinPoint point) throws Throwable {
//
//        // 获取类名
//        String className = point.getTarget().getClass().getSimpleName();
//        // 获取方法名
//        String methodName = point.getSignature().getName();
//        // 获取参数
//        Object[] args = point.getArgs();
//
//
//        List<Object> objects = Arrays.asList(args);
//
//        List<Object> collect = objects.stream().filter(i -> !(i instanceof ServletResponse)
//                && !(i instanceof InputStreamSource)).collect(Collectors.toList());
//
//            log.info("线程: {}\t 接口: {}\t 方法:{}\n入参: {}\n", Thread.currentThread().getName(), className, methodName, JSON.toJSONString(collect));
//
//        Object proceed = point.proceed();
//        if (log.isDebugEnabled()) {
//            log.debug("线程: {}\t 接口: {}\t 方法: {}\n出参: {}\n", Thread.currentThread().getName(), className, methodName, JSON.toJSONString(proceed));
//        }
//
//        return proceed;
//    }
//}
